# -*- coding: ISO-8859-1 -*-

import threading
from controleurClient.mControleurClient import ControleurClient

class AI():
    def __init__(self,nom):
        self.c=None
        self.nom=nom
        self.joueur=None
        self.initAI()
        
    def analyseSituation(self):
        if len(self.joueur.listeVirus)>10 or self.joueur.cpuDisponible<100:
            print 'attaque'
            liste = self.getAttaquable()
            if len(liste):
                ip=str(liste[0]).split('.')
                self.c.demanderAttaque(ip[0],ip[1],'5')
        else:
            print 'compile'
            ip = str(self.c.partie.joueurCourant.ordinateurPersonnel.ip).split('.')
            self.c.demanderCompiler(ip[0],ip[1])
        
        t = threading.Timer( 5, self.analyseSituation )
        t.start()
        
        
    def initAI(self):
        self.c=ControleurClient()
        self.c.nom=self.nom
        self.c.connectServ( 'localhost' )
        self.c.demandeCreationJoueur( str( self.nom ), "" )
        self.c.login( str( self.nom ) )
        self.joueur = self.c.partie.joueurCourant
        t = threading.Timer( 5, self.analyseSituation )
        t.start()
         
    def getAttaquable(self):
        listeRetour = []
        self.reseau = self.c.getReseau( str( self.c.partie.joueurCourant.ordinateurPersonnel.ip.idWan ) )
        for ordinateur in self.reseau:
            listeC = []
            for i in self.c.partie.joueurCourant.ordinateurPersonnel.connexions[0]:
                    listeC.append( i )
            for i in self.c.partie.joueurCourant.ordinateurPersonnel.connexions[1]:
                    listeC.append( i )
            for zombie in self.joueur.listeZombies:
                for i in zombie.connexions[1]:
                    listeC.append( i )
                for i in zombie.connexions[0]:
                    listeC.append( i )
    
            if self.c.partie.joueurCourant.ordinateurPersonnel in ordinateur.connexions[0] or  self.c.partie.joueurCourant.ordinateurPersonnel in ordinateur.connexions[1] or len( set( ordinateur.connexions[0] ) & set( self.c.partie.joueurCourant.listeZombies ) ) > 0 or len( set( ordinateur.connexions[1] ) & set( self.c.partie.joueurCourant.listeZombies ) ) > 0 or ordinateur in listeC:
                listeRetour.append(ordinateur)
        return listeRetour
    
if __name__ == '__main__':
    ligne = raw_input("tapez un nom pour l'AI >> ")
    AI(ligne)
                    
